import logging
import jieba

# 设置日志
logging.basicConfig(level=logging.DEBUG, format='%(asctime)s - %(levelname)s - %(message)s')
logger = logging.getLogger(__name__)

class ChineseTokenizer:
    """
    用于中文文本的自定义Tokenizer类，兼容rouge_score库的要求
    实现tokenize方法，支持中文分词
    """
    def __init__(self, char_based=False):
        """
        初始化Tokenizer
        
        Args:
            char_based: 是否使用字分词，默认为False（使用jieba分词）
        """
        self.char_based = char_based
        
    def tokenize(self, text):
        """
        分词方法，将文本转换为词元列表
        
        Args:
            text: 输入文本
        
        Returns:
            词元列表
        """
        if self.char_based:
            # 字分词模式
            return list(text)
        else:
            # jieba分词模式
            try:
                return list(jieba.cut(text))
            except Exception as e:
                logger.error(f"使用jieba分词时出错: {str(e)}")
                # 出错时降级为字分词
                return list(text)

class SimpleTokenizer:
    """
    简单的Tokenizer类，支持空格分隔的分词
    """
    def tokenize(self, text):
        """
        分词方法，按空格分词
        
        Args:
            text: 输入文本（已按空格分词）
        
        Returns:
            词元列表
        """
        return text.split()

# 测试代码
if __name__ == "__main__":
    # 测试中文分词器
    chinese_tokenizer = ChineseTokenizer(char_based=False)
    text = "这是一个测试句子"
    tokens = chinese_tokenizer.tokenize(text)
    logger.info(f"jieba分词结果: {tokens}")
    
    # 测试字分词器
    char_tokenizer = ChineseTokenizer(char_based=True)
    tokens = char_tokenizer.tokenize(text)
    logger.info(f"字分词结果: {tokens}")
    
    # 测试简单分词器
    simple_tokenizer = SimpleTokenizer()
    space_separated_text = "这 是 一个 测试 句子"
    tokens = simple_tokenizer.tokenize(space_separated_text)
    logger.info(f"空格分词结果: {tokens}")